/*
 * Hoyo.cpp
 *
 *  Created on: 24/10/2013
 *      Author: ezequiel
 */

#include "Hoyo.h"

Hoyo::Hoyo(glm::vec3 posicion, glm::vec3 tamanio) : Dibujable() {
forma = new FormaHoyos();
this->posicion = posicion;
this->tamanio = tamanio;
color.x = 1.0f;
color.y = 1.0f;
color.z = 0.5;
}

Hoyo::~Hoyo() {
	this->forma->~FormaHoyos();
	delete this->forma;
}

void Hoyo::render(GLuint handle, glm::mat4* matModelo) {
//	changeObjectColor(handle, color.x, color.y,color.z);
	this->forma->render(this->handle, matModelo );
}

void Hoyo::render(GLuint handle) {
	changeObjectColor(this->handle, 1.0, 1.0,1.0);
	glm::mat4  matrizAuxCuerpo = glm::mat4 (1.0f);
	matrizAuxCuerpo = glm::translate(matrizAuxCuerpo, this->posicion);
//	matrizAuxCuerpo =  glm::rotate(matrizAuxCuerpo,this->angulo, this->rotacion);
	matrizAuxCuerpo = glm::scale(matrizAuxCuerpo, this->tamanio);
	 this->render(handle, &matrizAuxCuerpo);

}

void Hoyo::cambiarColor(glm::vec3 tvec3) {
	this->color = tvec3;
}

void Hoyo::changeObjectColor(GLuint handle, float r, float g, float b)
{
    glm::vec3 diffuse_reflectivity = glm::vec3( r, g, b );

    GLuint location_diffuse_reflectivity = glGetUniformLocation( handle, "Kd");
    if( location_diffuse_reflectivity >= 0 )
	{
		glUniform3fv( location_diffuse_reflectivity, 1, &diffuse_reflectivity[0]);
	}

}

void Hoyo::setTextureid(GLuint textureid, GLuint textureNormal) {
this->forma->setTextureid(textureid);
this->forma->setTextureNormalId(textureNormal);
}

void Hoyo::setCam(Camara* cam, glm::mat4 pr) {
	this->forma->setCam(cam, pr);
}
